#include <linux/module.h>
#include <linux/init.h>
#include <linux/input.h>
#include <linux/fs.h>
#include <linux/device.h>
#include <linux/errno.h>
#include <linux/uaccess.h>

 
static struct input_dev *input_dev;

static int __init myplaform_init(void){
    int ret;
    
    input_dev = input_allocate_device();
    if(!input_dev){
        printk("input_alloc_device fail\n");
        return -ENOMEM;
    }
    input_dev->name = "myinput";
    input_dev->phys = "myinput/input0";
    __set_bit(EV_KEY,input_dev->evbit);
    __set_bit(KEY_1,input_dev->keybit);

    ret = input_register_device(input_dev);
    if(ret < 0){
        printk("input_register_device fail\n");
        goto error;
        
    }
    printk("input_register_device success\n");
    return 0;
error:
    input_free_device(input_dev);
    return ret;
}

static void __exit myplaform_exit(void){
    input_unregister_device(input_dev);
    printk("input_unregister_device success\n");
}
     

MODULE_AUTHOR("WLZ");
MODULE_LICENSE("GPL");
module_init(myplaform_init);
module_exit(myplaform_exit);